container: Use gtk_container_forall less
authorTimm Bäder <mail@baedert.org>
Mon, 24 Apr 2017 16:12:03 +0000 (18:12 +0200)
committerTimm Bäder <mail@baedert.org>
Tue, 25 Apr 2017 18:30:37 +0000 (20:30 +0200)
Just iterate over the child widgets directly and produce a much nicer
stack trace when debugging.

gtk/gtkcontainer.c

index 2670fb80e432ceba4e3b6bc6e6e62bd4965012dc..e86489f5ec53628bf160d1e40f36d3c2198381f2 100644 (file)
@@ -3013,24 +3013,16 @@ gtk_container_draw (GtkWidget *widget,
   return FALSE;
 }
 
-static void
-gtk_container_snapshot_forall (GtkWidget *child,
-                               gpointer   snapshot)
-{
-  gtk_widget_snapshot_child (_gtk_widget_get_parent (child),
-                             child,
-                             snapshot);
-}
-
 static void
 gtk_container_snapshot (GtkWidget   *widget,
                         GtkSnapshot *snapshot)
 {
-  GtkContainer *container = GTK_CONTAINER (widget);
+  GtkWidget *child;
 
-  gtk_container_forall (container,
-                        gtk_container_snapshot_forall,
-                        snapshot);
+  for (child = _gtk_widget_get_first_child (widget);
+       child != NULL;
+       child = _gtk_widget_get_next_sibling (child))
+    gtk_widget_snapshot_child (widget, child, snapshot);
 }
 
 static gboolean
@@ -3045,10 +3037,9 @@ gtk_container_should_propagate_draw (GtkContainer   *container,
 }
 
 static void
-union_with_clip (GtkWidget *widget,
-                 gpointer   data)
+union_with_clip (GtkWidget     *widget,
+                 GtkAllocation *clip)
 {
-  GdkRectangle *clip = data;
   GtkAllocation widget_clip;
 
   if (!gtk_widget_is_visible (widget) ||
@@ -3067,9 +3058,14 @@ void
 gtk_container_get_children_clip (GtkContainer  *container,
                                  GtkAllocation *out_clip)
 {
+  GtkWidget *child;
+
   memset (out_clip, 0, sizeof (GtkAllocation));
 
-  gtk_container_forall (container, union_with_clip, out_clip);
+  for (child = _gtk_widget_get_first_child (GTK_WIDGET (container));
+       child != NULL;
+       child = _gtk_widget_get_next_sibling (child))
+    union_with_clip (child, out_clip);
 }
 
 static void